---
id: reference
title: 2.3 手动搭建分层
sidebar_label: 2.3 手动搭建分层
---

:::tip 推荐使用脚手架

`Furion` 官方提供了非常灵活方便的脚手架，可以快速的创建多层架构项目。

推荐使用 《[2.2 官方脚手架](template.mdx)》代替本章节功能。

:::

## 2.3.1 推荐分层设计

`Furion` 推荐采用多层项目设计架构，每一个项目层的依赖分别是：

- `YourName.Application`：添加 `YourName.Core` 引用
- **`YourName.Core`：添加 `Furion` 引用** 🎗
- `YourName.Database.Migrations`：添加 `YourName.EntityFramework.Core` 引用
- `YourName.EntityFramework.Core`：添加 `YourName.Core` 引用
- `YourName.Web.Core`：添加 `YourName.Application`，`YourName.Database.Migrations` 引用
- **`YourName.Web.Entry`：添加 `YourName.Web.Core` 引用 和 `Microsoft.EntityFrameworkCore.Tools` 包**

:::important 特别说明

如果采用 `EFCore` 以外的 `ORM` 框架，如 `SqlSugar`，那么无需创建 `YourName.Database.Migrations` 和 `YourName.EntityFramework.Core` 层。

另外 `YourName.Web.Entry` 无需引用 `Microsoft.EntityFrameworkCore.Tools` 包。

:::

## 2.3.2 集成 `Furion` 功能

项目搭建好之后，集成 `Furion` 框架只需要在 `Program.cs` 中 添加 `Inject()` 方法即可：

```cs {18}
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;

namespace YourName.Web.Entry
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args)
        {
            return Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.Inject()
                              .UseStartup<Startup>();
                });
        }
    }
}
```

## 2.3.3 反馈与建议

:::note 与我们交流

给 Furion 提 [Issue](https://gitee.com/dotnetchina/Furion/issues/new?issue)。

:::
